package com.crm.biz.controller;

import java.text.MessageFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.crm.model.BizConfig;
import com.crm.service.BizConfigService;
import com.crm.util.JsonUtil;
import com.crm.util.ResponseUtil;
import com.crm.util.ValidateUtil;
import com.github.pagehelper.Page;

@Controller
@RequestMapping("/bizConfig")
public class BizConfigController {
	
	@Autowired
	private BizConfigService bizConfigService;
	
	@RequestMapping("/index")
	public String index(ModelMap map, Page<BizConfig> page, BizConfig t){
		//职业资格
		t.setConfigType(Byte.valueOf("1"));
		Page<BizConfig> list1 = (Page<BizConfig>) bizConfigService.selectAll(page, t);
		
		for(BizConfig record: list1){
			
			if(record.getConfigValue() != null){
				
				List<String> values = JsonUtil.readValue(record.getConfigValue(), List.class);
				
				record.setConfigDesc(MessageFormat.format(record.getConfigDesc(), values.toArray()));
			}
			
		}
		
		//学历
		t.setConfigType(Byte.valueOf("2"));
		Page<BizConfig> list2 = (Page<BizConfig>) bizConfigService.selectAll(page, t);
		
		for(BizConfig record: list2){
			
			if(record.getConfigValue() != null){
				
				List<String> values = JsonUtil.readValue(record.getConfigValue(), List.class);
				
				record.setConfigDesc(MessageFormat.format(record.getConfigDesc(), values.toArray()));
			}
			
		}
		
		map.put("list1", list1);
		
		map.put("list2", list2);
		
		return "configuration/entryForm";
	}
	
	@RequestMapping("/getAll")
	@ResponseBody
	public Map<String, Object> getAll(Page<BizConfig> page, BizConfig t){
		Map<String, Object> map = new HashMap<>();
		Page<BizConfig> list = (Page<BizConfig>) bizConfigService.selectAll(page, t);
		
		map.put("list", list);
		map.put("status", "success");
		map.put("msg", "新增成功！");
		
		return map;
	}
	
	@RequestMapping("/addNewRecord")
	@ResponseBody
	public Map<String, Object> addNewRecord(BizConfig record){
		
		Map<String, Object> map = new HashMap<>();
		
		String configId = "";
		if(!ValidateUtil.isEmpty(record.getConfigId())){
			bizConfigService.updateByPrimaryKey(record);
		}else{
			configId = bizConfigService.insertReturn(record);
		}
		map.put("status", "success");
		map.put("msg", "新增成功！");
		map.put("configId", configId);
		
		return map;
	}
	
	@RequestMapping("/updateRecord")
	@ResponseBody
	public Map<String, Object> updateRecord(@RequestParam MultiValueMap<String, String> params){
		
		Map<String, Object> map = new HashMap<>();
		
		bizConfigService.updateConfig(params);
		
		map.put("status", "success");
		map.put("msg", "修改成功！");
		
		return map;
	}
	@RequestMapping("/load")
	@ResponseBody
	public void load(HttpServletResponse response,HttpServletRequest request, Page<BizConfig> page, BizConfig t){
		Page<BizConfig> list = (Page<BizConfig>) bizConfigService.selectAll(page, t);
		ResponseUtil.resultPage(response,request,list);
	}

}
